<?php
include_once dirname(dirname(__FILE__)) . '/filtro_admin.php';
include_once dirname(dirname(__FILE__)) . '/funciones/basicas.php';
include_once dirname(dirname(__FILE__)) . '/funciones/helpers.php';

//Comprueba que existan las variables
if( isset($_POST['monto'],$_POST['pago'],$_POST['ncheque'],$_POST['fecha'],$_POST['nfactura']) )
{
   //CONECTAR con la BD
   $conexion = conectar();
   //separa los numeros de factura y los deja en el array
   $array_nfactura = explode(";",$_POST['nfactura']);
   $ncheque = trim($_POST['ncheque']);
   $fecha_ingreso = fechaSql(trim($_POST['fecha']));
   $monto = trim($_POST['monto']);
   $pago = trim($_POST['pago']);
   //inicia transaccion
   mysql_query("BEGIN",$conexion);
   //comienza a recorrer cada factura y le resta el monto del cheque al total.
   $i = 0;
   //indica si se realizó un pago
   $ingreso_pago = 0; 
   //recorre cada factura para abonar pago
   while( !empty($array_nfactura[$i]) )
   {
          //obtiene el codigo de la factura
	  $nfactura = $array_nfactura[$i];
          //obtiene lo que se debe de la factura
          $sql="SELECT debe
	        FROM factura
		WHERE cod_factura='$nfactura'";
          $consulta = mysql_query($sql,$conexion)or die("error en la consulta");
          $debe = mysql_fetch_array($consulta);
          $debe = $debe['debe'];
          //Si se debe 0 de la factura
          if($debe == 0)
          {
              $i++;
          }
          elseif ($debe < 0) 
          {
              die("Hay facturas con deudas negativas, favor revisar con administrador");
          }
          else
          {
             if($ingreso_pago == 0)
             {
                 //Ingresa el pago
                $sql_pago = "INSERT INTO pago (cod_cheque,fecha_ingreso,monto,forma_pago)
                             VALUES ('$ncheque','$fecha_ingreso','$monto','$pago')";
                $consulta = mysql_query($sql_pago,$conexion)or die("Error al ingresar el pago".mysql_error());
                //Obtiene el Id del pago
                $ultimoId = mysql_query("SELECT LAST_INSERT_ID() as id FROM pago",$conexion)or die("Error al obtener el ultimo ID");
                $nPago = mysql_fetch_array($ultimoId);
                $idPago = $nPago['id'];
                //se indica que ya se ingreso el pago
                $ingreso_pago = 1;
             }

             //obtiene la diferencia entre monto de pago y lo que se debe
             $diff = $monto - $debe;

             //solo se pago parte de la factura
	     if( $diff < 0 && $monto > 0)
             {
                mysql_query("INSERT INTO pago_factura  (id_pago,cod_factura,monto) VALUES ('$idPago','$nfactura','$monto')",$conexion)or die("error al ingresar el pago_factura.");
		          mysql_query("UPDATE factura SET estado='abonada',debe=debe-'$monto' WHERE cod_factura='$nfactura'",$conexion)or die("Error al actualizar el debe");
		          echo "<br><li>Se ha abonado a la factura N# ".$nfactura." el monto de $".number_format($monto,0,",",".")."</li>";
                $monto = 0;
             }             
	     elseif( $diff == 0 && $monto > 0 ) //Si se pago el total de la factura
	     {
                mysql_query("INSERT INTO pago_factura  (id_pago,cod_factura,monto) VALUES ('$idPago','$nfactura','$monto')",$conexion)or die("error al ingresar el pago_factura");
                mysql_query("UPDATE factura SET estado='pagada',debe=0 WHERE cod_factura='$nfactura'",$conexion)or die("error al actualizar el debe");
		          echo "<br><li>Se a pagado el total de la factura N# ".$nfactura."</li>";
                $monto = 0;
             }             
     	     elseif( $diff > 0 && $monto > 0 ) //Si pago es mayor al debe
	     {
                mysql_query("INSERT INTO pago_factura  (id_pago,cod_factura,monto) VALUES ('$idPago','$nfactura','$debe')",$conexion)or die("error al ingresar el pago_factura");
                mysql_query("UPDATE factura SET estado='pagada',debe=0 WHERE cod_factura='$nfactura'",$conexion)or die("error al actualizar el debe");
		echo "<br><li>Se ha pagado el total de la factura: N# ".$nfactura." y sobraron:$" .number_format(abs($diff),0,",","."). "</li>";
                $monto = $monto - $debe;
             }
	     $i++;
          }
   }//fin while
   //Si al terminar el pago de cada factura sigue habiendo un monto del pago positivo, se deja como saldo a favor del cliente
   if($monto > 0 && $ingreso_pago == 1)
   {
        mysql_query("UPDATE cliente SET saldo=saldo+'$monto' WHERE cod_cli='$cod_cli'",$conexion)or die("Error al actualizar el saldo a favor del cliente");
        echo "<br><li>ha quedado un saldo a favor del cliente de $".number_format($monto,0,",",".")."</li>";
   }
   //Si al terminar no se encontro una factura para pagar
   if($ingreso_pago == 0)
   {
        echo "<br /><li>No se ingreso el pago, no hubieron facturas por pagar</li>";
   }
   
   mysql_query("COMMIT",$conexion);
   mysql_close($conexion);
}
?>